home *** CD-ROM | disk | FTP | other *** search
- /*
- File: DeskBus.h
-
- Copyright: © 1984-1993 by Apple Computer, Inc., all rights reserved.
-
- WARNING
- This file was auto generated by the interfacer tool. Modifications
- must be made to the master file.
-
- */
-
- #ifndef __DESKBUS__
- #define __DESKBUS__
-
- #ifndef __TYPES__
- #include <Types.h>
- /* #include <ConditionalMacros.h> */
- /* #include <MixedMode.h> */
- /* #include <Traps.h> */
- #endif
-
- typedef char ADBAddress;
-
-
- /*
- ADBCompletionProcs, ADBDeviceDriverProcs, ADBServiceRoutineProcs, and
- ADBInitProcs cannot be written in or called from a high-level language
- without the help of mixed mode or assembly glue because they use the
- following parameter-passing convention:
-
- NOTE: IM V-371 says that A1 points to the completion routine. There is
- no good reason for passing to the routine a pointer to itself. We have
- therefore done away with this parameter.
-
- typedef pascal void (*ADBCompletionProcPtr)(Ptr dataBuffPtr,
- Ptr opDataAreaPtr, long command);
-
- In:
- => dataBuffPtr A0.L
- => opDataAreaPtr A2.L
- => command D0.L
- Out:
- none
-
- typedef pascal void (*ADBDeviceDriverProcPtr)(char devAddress, char devType);
-
- In:
- => devAddress D0.B
- => devType D1.B
- Out:
- none
-
- typedef pascal void (*ADBServiceRoutineProcPtr)(Ptr dataBuffPtr,
- ADBCompletionUPP completionProc, Ptr dataPtr, long command);
-
- In:
- => dataBuffPtr A0.L
- => completionProc A1.L
- => dataPtr A2.L
- => command D0.L
- Out:
- none
-
- NOTE: ADBInitProcs are called at the beginning and end of the ADBReInit call.
- Inside Mac V-367 says to install this type of routine by jamming it into
- the low-mem global JADBProc. The current recommended way to install a
- VADBProc is to use a SetOSTrapAddress on the trap _VADBProc. The parameter
- callOrder will be 0 for preprocessing, 1 for postprocessing.
-
- typedef pascal void (*ADBInitProcPtr)(char callOrder);
-
- In:
- => callOrder D0.B
- Out:
- none
-
- */
-
- enum {
- uppADBCompletionProcInfo = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA0,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(2,kRegisterA2,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(3,kRegisterD0,kFourByteCode),
- uppADBDeviceDriverProcInfo = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterD0,kOneByteCode)|REGISTER_ROUTINE_PARAMETER(2,kRegisterD1,kOneByteCode),
- uppADBServiceRoutineProcInfo = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA0,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(2,kRegisterA1,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(3,kRegisterA2,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(4,kRegisterD0,kFourByteCode),
- uppADBInitProcInfo = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterD0,kOneByteCode)
- };
-
- #if USESROUTINEDESCRIPTORS
- typedef pascal void (*ADBCompletionProcPtr)(Ptr dataBuffPtr, Ptr opDataAreaPtr, long command);
-
- typedef UniversalProcPtr ADBCompletionUPP;
-
- #define CallADBCompletionProc(userRoutine, dataBuffPtr, opDataAreaPtr, command) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppADBCompletionProcInfo, \
- (dataBuffPtr), (opDataAreaPtr), (command))
-
- #define NewADBCompletionProc(userRoutine) \
- (ADBCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), \
- uppADBCompletionProcInfo, GetCurrentISA())
-
- typedef pascal void (*ADBDeviceDriverProcPtr)(char devAddress, char devType);
-
- typedef UniversalProcPtr ADBDeviceDriverUPP;
-
- #define CallADBDeviceDriverProc(userRoutine, devAddress, devType) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppADBDeviceDriverProcInfo, \
- (devAddress), (devType))
-
- #define NewADBDeviceDriverProc(userRoutine) \
- (ADBDeviceDriverUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), \
- uppADBDeviceDriverProcInfo, GetCurrentISA())
-
- typedef pascal void (*ADBServiceRoutineProcPtr)(Ptr dataBuffPtr, ADBCompletionUPP completionProc, Ptr dataPtr, long command);
-
- typedef UniversalProcPtr ADBServiceRoutineUPP;
-
- #define CallADBServiceRoutineProc(userRoutine, dataBuffPtr, completionProc, dataPtr, command) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppADBServiceRoutineProcInfo, \
- (dataBuffPtr), (completionProc), (dataPtr), (command))
-
- #define NewADBServiceRoutineProc(userRoutine) \
- (ADBServiceRoutineUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), \
- uppADBServiceRoutineProcInfo, GetCurrentISA())
-
- typedef pascal void (*ADBInitProcPtr)(char callOrder);
-
- typedef UniversalProcPtr ADBInitUPP;
-
- #define CallADBInitProc(userRoutine, callOrder) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppADBInitProcInfo, (callOrder))
-
- #define NewADBInitProc(userRoutine) \
- (ADBInitUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppADBInitProcInfo, \
- GetCurrentISA())
-
- #else
- typedef ProcPtr ADBCompletionUPP;
-
- #define NewADBCompletionProc(userRoutine) \
- (ADBCompletionUPP)((userRoutine))
-
- typedef ProcPtr ADBDeviceDriverUPP;
-
- #define NewADBDeviceDriverProc(userRoutine) \
- (ADBDeviceDriverUPP)((userRoutine))
-
- typedef ProcPtr ADBServiceRoutineUPP;
-
- #define NewADBServiceRoutineProc(userRoutine) \
- (ADBServiceRoutineUPP)((userRoutine))
-
- typedef ProcPtr ADBInitUPP;
-
- #define NewADBInitProc(userRoutine) \
- (ADBInitUPP)(userRoutine)
-
- #endif
-
- #if defined(powerc) || defined (__powerc)
- #pragma options align=mac68k
- #endif
- struct ADBOpBlock {
- Ptr dataBuffPtr; /*address of data buffer*/
- ADBServiceRoutineUPP opServiceRtPtr; /*service routine pointer*/
- Ptr opDataAreaPtr; /*optional data area address*/
- };
- #if defined(powerc) || defined(__powerc)
- #pragma options align=reset
- #endif
-
- typedef struct ADBOpBlock ADBOpBlock;
-
- typedef ADBOpBlock *ADBOpBPtr;
-
- #if defined(powerc) || defined (__powerc)
- #pragma options align=mac68k
- #endif
- struct ADBDataBlock {
- char devType; /*device type*/
- char origADBAddr; /*original ADB Address*/
- ADBServiceRoutineUPP dbServiceRtPtr; /*service routine pointer*/
- Ptr dbDataAreaAddr; /*data area address*/
- };
- #if defined(powerc) || defined(__powerc)
- #pragma options align=reset
- #endif
-
- typedef struct ADBDataBlock ADBDataBlock;
-
- typedef ADBDataBlock *ADBDBlkPtr;
-
- #if defined(powerc) || defined (__powerc)
- #pragma options align=mac68k
- #endif
- struct ADBSetInfoBlock {
- ADBServiceRoutineUPP siService; /*service routine pointer*/
- Ptr siDataAreaAddr; /*data area address*/
- };
- #if defined(powerc) || defined(__powerc)
- #pragma options align=reset
- #endif
-
- typedef struct ADBSetInfoBlock ADBSetInfoBlock;
-
- typedef ADBSetInfoBlock *ADBSInfoPtr;
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- extern pascal void ADBReInit(void)
- ONEWORDINLINE(0xA07B);
- extern pascal OSErr ADBOp(Ptr data, ADBCompletionUPP compRout, Ptr buffer, short commandNum);
-
- #if USES68KINLINES
- #pragma parameter __D0 CountADBs
- #endif
- extern pascal short CountADBs(void)
- ONEWORDINLINE(0xA077);
-
- #if USES68KINLINES
- #pragma parameter __D0 GetIndADB(__A0, __D0)
- #endif
- extern pascal ADBAddress GetIndADB(ADBDataBlock *info, short devTableIndex)
- ONEWORDINLINE(0xA078);
-
- #if USES68KINLINES
- #pragma parameter __D0 GetADBInfo(__A0, __D0)
- #endif
- extern pascal OSErr GetADBInfo(ADBDataBlock *info, ADBAddress adbAddr)
- ONEWORDINLINE(0xA079);
-
- #if USES68KINLINES
- #pragma parameter __D0 SetADBInfo(__A0, __D0)
- #endif
- extern pascal OSErr SetADBInfo(ADBSetInfoBlock *info, ADBAddress adbAddr)
- ONEWORDINLINE(0xA07A);
- #ifdef __cplusplus
- }
- #endif
-
- #endif
-
-